import java.util.Scanner;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:${USER}
 * Date:${YEAR}-${MONTH}-${DAY}
 * ${TIME}
 */
public class Main {
    // 定义静态变量，可以在整个类中访问
    static int n1;          // 用于存储字符串的长度
    static char[] s1;        // 用于存储输入的字符串

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别

        // 读取输入
        int n = in.nextInt();    // 字符串长度
        n1 = n;                  // 赋值给静态变量 n1
        int l = in.nextInt();    // 左边界 l
        int r = in.nextInt();    // 右边界 r
        char[] s = in.next().toCharArray();  // 读取字符串并转为字符数组
        s1 = s;                  // 赋值给静态变量 s1

        // 计算区间 [l, r] 内的子串数量，等于 Func(r) - Func(l-1)
        System.out.println(Func(r) - Func(l - 1));
    }

    /**
     * 计算所有包含最多 x 种不同字符的子串数量
     * @param x 最多允许的字符种类数
     * @return 满足条件的子串数量
     */
    static long Func(int x) {
        int left = 0, right = 0;     // 滑动窗口的左右指针
        int[] hash = new int[26];    // 用于统计窗口中每个字符的出现次数
        int kinds = 0;               // 当前窗口中的字符种类数
        long count = 0;              // 满足条件的子串数量

        while (right < n1) {
            // 右指针移动，增加新字符到窗口
            if (hash[s1[right] - 'a']++ == 0) {
                kinds++;             // 如果该字符第一次出现，种类数+1
            }

            // 如果当前种类数超过了 x，移动左指针缩小窗口
            while (kinds > x) {
                if (hash[s1[left] - 'a']-- == 1) {
                    kinds--;         // 如果该字符在窗口中只剩一个，移除后种类数-1
                }
                left++;             // 左指针右移
            }

            // 当前窗口中的所有子串都满足条件（最多 x 种字符）
            // 新增的子串数量为 right - left + 1
            count += right - left + 1;
            right++;                // 右指针继续右移
        }
        return count;
    }
}